package com.ppm.server.base.controller;


import com.github.pagehelper.PageInfo;
import com.ppm.common.base.dto.PageDTO;
import com.ppm.common.base.dto.ResultDTO;
import com.ppm.common.base.util.SSOHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author KwokChiKit
 * @date 2021/4/15 17:38
 * @Description 基础控制器
 */
public class BaseController {

    /**
     * 构造分页对象
     * <p>
     * 构造控制层返回分页对象
     * <p>
     * 后台控制层统一返回该方法
     *
     * @param list
     * @return
     */
    @Autowired(required=false)
    HttpServletRequest request;

    @Autowired
    private RedisTemplate redisTemplate;

    protected Long getUserId() {
        return SSOHelper.getUserId(redisTemplate, request);
    }

    protected <T> ResultDTO<PageDTO> generatePage(List<T> list) {
        //通过构造器生成一个分页信息对象
        PageInfo pageInfo = new PageInfo(list);
        //构造返回前端分页信息DTO
        PageDTO pageDTO = new PageDTO(pageInfo.getTotal(), pageInfo.getPageNum(), pageInfo.getPageSize(), pageInfo.getList());
        return ResultDTO.requestSuccess(pageDTO);
    }
}
